package com.jdwx.opengl.face.utils;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

/**
 * ****************************
 * Project：
 *
 * @AUTHER： YBB
 * CreateTime：2020/6/15 20:54
 * Describe：
 * ****************************
 */
public class DFaceSetting {
    private static volatile DFaceSetting instance;

    private DFaceSetting() {

    }

    public static DFaceSetting getInstance() {
        if (instance == null) {
            synchronized (DFaceSetting.class) {
                if (instance == null) {
                    instance = new DFaceSetting();
                }
            }
        }
        return instance;
    }

    public Bitmap tmpBitmap;

    /**
     * 压缩图片
     * 该方法引用自：http://blog.csdn.net/demonliuhui/article/details/52949203
     * @param image
     * @return
     */
    public Bitmap CompressImage(Bitmap image) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法，这里100表示不压缩，把压缩后的数据存放到baos中
        int options = 100;
        while (baos.toByteArray().length / 1024 > 100) {  //循环判断如果压缩后图片是否大于100kb,大于继续压缩
            baos.reset();//重置baos即清空baos
            image.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%，把压缩后的数据存放到baos中
            options -= 10;//每次都减少10
        }
        ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中
        Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片
        return bitmap;
    }
}
